Parameters

filtered_data <- read.csv("data/data-2023-09-11 (2).csv", header = TRUE)
Warning: cannot open file 'data/data-2023-09-11 (2).csv': No such file or directoryError in file(file, "rt") : cannot open the connection

data filtering convertion

mydata_genind
/// GENIND OBJECT /////////

 // 698 individuals; 6 loci; 48 alleles; size: 195 Kb

 // Basic content
   @tab:  698 x 48 matrix of allele counts
   @loc.n.all: number of alleles per locus (range: 5-12)
   @loc.fac: locus factor for the 48 columns of @tab
   @all.names: list of allele names for each locus
   @ploidy: ploidy of each individual  (range: 2-2)
   @type:  codom
   @call: df2genind(X = filtered_data[, 6:11], sep = "/", ncode = 6, ind.names = filtered_data$indv, 
    pop = filtered_data$Population, NA.char = "0/0", ploidy = 2, 
    type = "codom", strata = NULL, hierarchy = NULL)

 // Optional content
   @pop: population of each individual (group size range: 24-166)

Run basic.stats and render the result

Missing data

HW - Panmixia



library("pegas")

hw.test(as.loci(mydata_genind), B = 1000)

Linkage Disequilibrium


LD(as.loci(mydata_genind$tab), locus = c(1, 2), details = TRUE)

a<-LDscan(as.loci(mydata_hierfstat[,2:7]))

LDmap(a)


head(mydata_hierfstat[,2:7])


library("poppr")
pair.ia(mydata_genind, sample = 9)

shuffle df


#shuffled_matrices <- replicate(n_rep, mat[sample(nrow(mat)), ], simplify = FALSE)
shuffled_matrices <- replicate(n_rep, mat[sample(length(mat), replace = FALSE)], simplify = FALSE)
##################
# shuffle only the genotype and add the pop column later for each matrices. 
#in the loop? 
###############


# Create a list to store the wc
fst_df <- numeric(sequence_length)
fis_df <- numeric(sequence_length)

# Calculate the average for each shuffled matrix

# Iterate through the shuffled matrices
for (i in 1:n_rep) {
  # Calculate the statistics for the i-th matrix
  #HERE THE COLUMN POP
  merged_df <- cbind(level_pop, shuffled_matrices[[i]])
  result_f_stats <- wc(shuffled_matrices[[i]]) 
  result_f_stats <- as.data.frame(result_f_stats$per.loc)
  # Extract FST and FIS values
  fst_values <- result_f_stats$FST
  fis_values <- result_f_stats$FIS
  print( fst_values)
  # Assign values to the data frames
  fst_df <- cbind(fst_df, result_f_stats$FST)
  fis_df <- cbind(fis_df, result_f_stats$FIS)
}

# Set row names as in result_f_stats

rownames(fst_df) <- rownames(fis_df) <- rownames(result_f_stats)
result_FST <- fst_df[, -1]
fis_df <-fis_df[, -1]
vec <- seq(1, n_rep)
colnames(result_FST) <- colnames(fis_df) <- vec


result_FST[1,] 

count (result_f_stats[,1][1] > result_FST[1,] )
count <- sum(result_f_stats[,1][1] > result_FST[1, ])



# Initialize an empty data frame to store the counts
count_df <- data.frame(
  Greater = numeric(length(result_FST)),
  Smaller = numeric(length(result_FST))
)

# Compare the values in result_f_stats[1] to result_FST for each column
for (col in colnames(result_FST)) {
  greater_count <- sum(result_f_stats[1] > result_FST[, col])
  smaller_count <- sum(result_f_stats[1] < result_FST[, col])
  count_df$Greater[col] <- greater_count
  count_df$Smaller[col] <- smaller_count
}

# Print the count data frame
print(count_df)

######################## ######################## 

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyBQYXJhbWV0ZXJzIAoKYGBge3J9CmZpbHRlcmVkX2RhdGEgPC0gcmVhZC5jc3YoImRhdGEtMjAyMy0wOS0xMSAoMikuY3N2IiwgaGVhZGVyID0gVFJVRSkKCnNlbGVjdGVkX3N0YXRzIDwtIGMoIkhvIiwgIkhzIiwgIkh0IiwgIkZpcyAoVyZDKSIsICJGc3QgKFcmQykiLCAiRmlzIChOZWkpIiwgIkZzdCAoTmVpKSIKKQoKbl9yZXA9MTAKCnNlcXVlbmNlX2xlbmd0aCA8LSBsZW5ndGgoNjoxMSkgCmBgYAoKCgojIGRhdGEgZmlsdGVyaW5nIGNvbnZlcnRpb24KCmBgYHtyfQpsaWJyYXJ5KGhpZXJmc3RhdCkKCmZpbHRlcmVkX2RhdGEgPC0gZGF0YS5mcmFtZShpbmR2ID0gcGFzdGUoc3Vic3RyKGZpbHRlcmVkX2RhdGEkUG9wdWxhdGlvbiwxLDMpLCByb3cubmFtZXMoZmlsdGVyZWRfZGF0YSksIHNlcD0iLiIpLCBmaWx0ZXJlZF9kYXRhKQojIENyZWF0ZSBteWRhdGFfZ2VuaW5kCnBvcHVsYXRpb24gPC0gZmlsdGVyZWRfZGF0YSRQb3B1bGF0aW9uCm15ZGF0YV9nZW5pbmQgPC0gZGYyZ2VuaW5kKAogIFggPSBmaWx0ZXJlZF9kYXRhWyw2OjExXSwKICBzZXAgPSAiLyIsCiAgbmNvZGUgPSA2LAogIGluZC5uYW1lcyA9IGZpbHRlcmVkX2RhdGEkaW5kdiwKICBwb3AgPSBmaWx0ZXJlZF9kYXRhJFBvcHVsYXRpb24sCiAgTkEuY2hhciA9ICIwLzAiLAogIHBsb2lkeSA9IDIsCiAgdHlwZSA9ICJjb2RvbSIsCiAgc3RyYXRhID0gTlVMTCwKICBoaWVyYXJjaHkgPSBOVUxMCikKbXlkYXRhX2dlbmluZApteWRhdGFfaGllcmZzdGF0IDwtIGdlbmluZDJoaWVyZnN0YXQobXlkYXRhX2dlbmluZCkKYGBgCgoKCiMgUnVuIGJhc2ljLnN0YXRzIGFuZCByZW5kZXIgdGhlIHJlc3VsdAoKYGBge3J9CmxpYnJhcnkoInBlZ2FzIikKbGlicmFyeShkcGx5cikKbGlicmFyeSh0aWJibGUpCgpyZXN1bHQgPC0gYmFzaWMuc3RhdHMobXlkYXRhX2hpZXJmc3RhdCkKZGZfcmVzdXRsX2Jhc2ljPC1hcy5kYXRhLmZyYW1lKHJlc3VsdCRwZXJsb2MpCgojIFdlaXIgYW5kIENvY2tyaGFtIGVzdGltYXRlcyBvZiBGc3RhdGlzdGljcyAtIEZJUyBhbmQgRlNUIApyZXN1bHRfZl9zdGF0cyA8LSBGc3QoYXMubG9jaShteWRhdGFfZ2VuaW5kKSkKcmVzdWx0X2Zfc3RhdHMgPC0gcmVzdWx0X2Zfc3RhdHNbLDI6M10KY29sbmFtZXMocmVzdWx0X2Zfc3RhdHMpIDwtIGMoIkZzdCAoVyZDKSIsICJGaXMgKFcmQykiKQpyZXN1bHRfZl9zdGF0cyA8LSBtZXJnZShyZXN1bHRfZl9zdGF0cywgZGZfcmVzdXRsX2Jhc2ljLCBieT0icm93Lm5hbWVzIixhbGwueD1UUlVFKQpjb2xuYW1lcyhyZXN1bHRfZl9zdGF0cylbMTBdIDwtICJGc3QgKE5laSkiCmNvbG5hbWVzKHJlc3VsdF9mX3N0YXRzKVsxMl0gPC0gIkZpcyAoTmVpKSIKcmVzdWx0X2Zfc3RhdHMgPC0gcmVzdWx0X2Zfc3RhdHMgJT4lIGNvbHVtbl90b19yb3duYW1lcyguLCB2YXIgPSAnUm93Lm5hbWVzJykKcmVzdWx0X2Zfc3RhdHNfc2VsZWMgPC0gcmVzdWx0X2Zfc3RhdHMgJT4lIHNlbGVjdChhbGxfb2Yoc2VsZWN0ZWRfc3RhdHMpKQpyZXN1bHRfZl9zdGF0c19zZWxlYwpgYGAKCgoKIyBNaXNzaW5nIGRhdGEKCmBgYHtyfQojIExpYnJhcmllcwpsaWJyYXJ5KCJwb3BwciIpCmxpYnJhcnkoImhlYXRtYXBseSIpCgptaXNzaW5nX2RhdGEgPC0gaW5mb190YWJsZShteWRhdGFfZ2VuaW5kLCBwbG90ID0gRkFMU0UpCgojIE1hdHJpeCBmb3JtYXQKbWF0IDwtIGFzLm1hdHJpeChtaXNzaW5nX2RhdGEpCiMgaGVhdG1hcApwIDwtIGhlYXRtYXBseShtYXQsIAogICAgICAgICAgICAgICBkZW5kcm9ncmFtID0gIm5vbmUiLAogICAgICAgICAgICAgICB4bGFiID0gIiIsIHlsYWIgPSAiIiwgCiAgICAgICAgICAgICAgIG1haW4gPSAiIiwKICAgICAgICAgICAgICAgc2NhbGUgPSAiY29sdW1uIiwKICAgICAgICAgICAgICAgbWFyZ2lucyA9IGMoNjAsMTAwLDQwLDIwKSwKICAgICAgICAgICAgICAgZ3JpZF9jb2xvciA9ICJ3aGl0ZSIsCiAgICAgICAgICAgICAgIGdyaWRfd2lkdGggPSAwLjAwMDAxLAogICAgICAgICAgICAgICB0aXRsZVggPSBGQUxTRSwKICAgICAgICAgICAgICAgaGlkZV9jb2xvcmJhciA9IFRSVUUsCiAgICAgICAgICAgICAgIGJyYW5jaGVzX2x3ZCA9IDAuMSwKICAgICAgICAgICAgICAgbGFiZWxfbmFtZXMgPSBjKCJQb3B1bGF0aW9uIiwgIk1hcmtlciIsICJWYWx1ZSIpLAogICAgICAgICAgICAgICBmb250c2l6ZV9yb3cgPSA4LCBmb250c2l6ZV9jb2wgPSA4LAogICAgICAgICAgICAgICBsYWJDb2wgPSBjb2xuYW1lcyhtYXQpLAogICAgICAgICAgICAgICBsYWJSb3cgPSByb3duYW1lcyhtYXQpLAogICAgICAgICAgICAgICBoZWF0bWFwX2xheWVycyA9IHRoZW1lKGF4aXMubGluZT1lbGVtZW50X2JsYW5rKCkpCikKcApgYGAKCgoKIyBIVyAtIFBhbm1peGlhCgpgYGB7cn0KCgpsaWJyYXJ5KCJwZWdhcyIpCgpody50ZXN0KGFzLmxvY2kobXlkYXRhX2dlbmluZCksIEIgPSAxMDAwKQpgYGAKCgoKIyBMaW5rYWdlIERpc2VxdWlsaWJyaXVtCgpgYGB7cn0KCkxEKGFzLmxvY2kobXlkYXRhX2dlbmluZCR0YWIpLCBsb2N1cyA9IGMoMSwgMiksIGRldGFpbHMgPSBUUlVFKQoKYTwtTERzY2FuKGFzLmxvY2kobXlkYXRhX2hpZXJmc3RhdFssMjo3XSkpCgpMRG1hcChhKQoKCmhlYWQobXlkYXRhX2hpZXJmc3RhdFssMjo3XSkKCgpsaWJyYXJ5KCJwb3BwciIpCnBhaXIuaWEobXlkYXRhX2dlbmluZCwgc2FtcGxlID0gOSkKCmBgYAoKCiMgc2h1ZmZsZSBkZgoKYGBge3J9Cgojc2h1ZmZsZWRfbWF0cmljZXMgPC0gcmVwbGljYXRlKG5fcmVwLCBtYXRbc2FtcGxlKG5yb3cobWF0KSksIF0sIHNpbXBsaWZ5ID0gRkFMU0UpCnNodWZmbGVkX21hdHJpY2VzIDwtIHJlcGxpY2F0ZShuX3JlcCwgbWF0W3NhbXBsZShsZW5ndGgobWF0KSwgcmVwbGFjZSA9IEZBTFNFKV0sIHNpbXBsaWZ5ID0gRkFMU0UpCiMjIyMjIyMjIyMjIyMjIyMjIwojIHNodWZmbGUgb25seSB0aGUgZ2Vub3R5cGUgYW5kIGFkZCB0aGUgcG9wIGNvbHVtbiBsYXRlciBmb3IgZWFjaCBtYXRyaWNlcy4gCiNpbiB0aGUgbG9vcD8gCiMjIyMjIyMjIyMjIyMjIwoKCiMgQ3JlYXRlIGEgbGlzdCB0byBzdG9yZSB0aGUgd2MKZnN0X2RmIDwtIG51bWVyaWMoc2VxdWVuY2VfbGVuZ3RoKQpmaXNfZGYgPC0gbnVtZXJpYyhzZXF1ZW5jZV9sZW5ndGgpCgojIENhbGN1bGF0ZSB0aGUgYXZlcmFnZSBmb3IgZWFjaCBzaHVmZmxlZCBtYXRyaXgKCiMgSXRlcmF0ZSB0aHJvdWdoIHRoZSBzaHVmZmxlZCBtYXRyaWNlcwpmb3IgKGkgaW4gMTpuX3JlcCkgewogICMgQ2FsY3VsYXRlIHRoZSBzdGF0aXN0aWNzIGZvciB0aGUgaS10aCBtYXRyaXgKICAjSEVSRSBUSEUgQ09MVU1OIFBPUAogIG1lcmdlZF9kZiA8LSBjYmluZChsZXZlbF9wb3AsIHNodWZmbGVkX21hdHJpY2VzW1tpXV0pCiAgcmVzdWx0X2Zfc3RhdHMgPC0gd2Moc2h1ZmZsZWRfbWF0cmljZXNbW2ldXSkgCiAgcmVzdWx0X2Zfc3RhdHMgPC0gYXMuZGF0YS5mcmFtZShyZXN1bHRfZl9zdGF0cyRwZXIubG9jKQogICMgRXh0cmFjdCBGU1QgYW5kIEZJUyB2YWx1ZXMKICBmc3RfdmFsdWVzIDwtIHJlc3VsdF9mX3N0YXRzJEZTVAogIGZpc192YWx1ZXMgPC0gcmVzdWx0X2Zfc3RhdHMkRklTCiAgcHJpbnQoIGZzdF92YWx1ZXMpCiAgIyBBc3NpZ24gdmFsdWVzIHRvIHRoZSBkYXRhIGZyYW1lcwogIGZzdF9kZiA8LSBjYmluZChmc3RfZGYsIHJlc3VsdF9mX3N0YXRzJEZTVCkKICBmaXNfZGYgPC0gY2JpbmQoZmlzX2RmLCByZXN1bHRfZl9zdGF0cyRGSVMpCn0KCiMgU2V0IHJvdyBuYW1lcyBhcyBpbiByZXN1bHRfZl9zdGF0cwoKcm93bmFtZXMoZnN0X2RmKSA8LSByb3duYW1lcyhmaXNfZGYpIDwtIHJvd25hbWVzKHJlc3VsdF9mX3N0YXRzKQpyZXN1bHRfRlNUIDwtIGZzdF9kZlssIC0xXQpmaXNfZGYgPC1maXNfZGZbLCAtMV0KdmVjIDwtIHNlcSgxLCBuX3JlcCkKY29sbmFtZXMocmVzdWx0X0ZTVCkgPC0gY29sbmFtZXMoZmlzX2RmKSA8LSB2ZWMKCgpyZXN1bHRfRlNUWzEsXSAKCmNvdW50IChyZXN1bHRfZl9zdGF0c1ssMV1bMV0gPiByZXN1bHRfRlNUWzEsXSApCmNvdW50IDwtIHN1bShyZXN1bHRfZl9zdGF0c1ssMV1bMV0gPiByZXN1bHRfRlNUWzEsIF0pCgoKCiMgSW5pdGlhbGl6ZSBhbiBlbXB0eSBkYXRhIGZyYW1lIHRvIHN0b3JlIHRoZSBjb3VudHMKY291bnRfZGYgPC0gZGF0YS5mcmFtZSgKICBHcmVhdGVyID0gbnVtZXJpYyhsZW5ndGgocmVzdWx0X0ZTVCkpLAogIFNtYWxsZXIgPSBudW1lcmljKGxlbmd0aChyZXN1bHRfRlNUKSkKKQoKIyBDb21wYXJlIHRoZSB2YWx1ZXMgaW4gcmVzdWx0X2Zfc3RhdHNbMV0gdG8gcmVzdWx0X0ZTVCBmb3IgZWFjaCBjb2x1bW4KZm9yIChjb2wgaW4gY29sbmFtZXMocmVzdWx0X0ZTVCkpIHsKICBncmVhdGVyX2NvdW50IDwtIHN1bShyZXN1bHRfZl9zdGF0c1sxXSA+IHJlc3VsdF9GU1RbLCBjb2xdKQogIHNtYWxsZXJfY291bnQgPC0gc3VtKHJlc3VsdF9mX3N0YXRzWzFdIDwgcmVzdWx0X0ZTVFssIGNvbF0pCiAgY291bnRfZGYkR3JlYXRlcltjb2xdIDwtIGdyZWF0ZXJfY291bnQKICBjb3VudF9kZiRTbWFsbGVyW2NvbF0gPC0gc21hbGxlcl9jb3VudAp9CgojIFByaW50IHRoZSBjb3VudCBkYXRhIGZyYW1lCnByaW50KGNvdW50X2RmKQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAKCmBgYAoKIwoKYGBge3J9CgoKYGBgCgojCgpgYGB7cn0KCgpgYGAKCiMKCmBgYHtyfQoKCmBgYAoKIwoKYGBge3J9CgoKYGBgCgojCgpgYGB7cn0KCgpgYGAKCiMKCmBgYHtyfQoKCmBgYAoKIwoKYGBge3J9CgoKYGBgCgojCgpgYGB7cn0KCgpgYGAKCiMKCmBgYHtyfQoKCmBgYAo=